package br.main;

import java.io.File;
import java.net.URISyntaxException;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Session;

import br.com.etex.InitialContex;
import br.com.etex.InjecaoDependencia;
import br.com.etex.interfaces.Contex;
import br.com.etex.interfaces.Injetar;
import br.com.etex.persistence.templates.ClienteDAO;
import br.com.etico.entity.uml.Cliente;
import br.com.etico.entity.uml.Endereco;
import br.tete.classe.Computador;
import java.util.Collection;
public class Main {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Cliente cliente = null;
		ClienteDAO dao = new ClienteDAO();
		
		boolean b = true;
		
		while(b) {
			
			cliente = new Cliente();
			cliente.setNome("Thiago Luiz Rodrigues");
			cliente.setCpf("1111");
			cliente.setIdade(24);
			cliente.setEndereco(new ArrayList<Endereco>());
			
			for(int i = 0; i < 20; i++) {
				Endereco endereco = new Endereco();
				endereco.setNumero("1234");
				endereco.setRua("rua amador bueno " + i);
				endereco.setCliente(cliente);
				cliente.getEndereco().add(endereco);
			}
			
			dao.salvar(cliente);
			
			cliente = (Cliente)dao.selecionarID(cliente.getId());
			
			cliente.setNome("pedro de lara rodrigues");
			cliente.setIdade(33333333L);
			
			dao.atualizar(cliente);
			
			dao.deletar(cliente);
			
			List<Cliente> clientes = (List<Cliente>)dao.getCriteria().list();
			
			for(Cliente cliente2 : clientes) {
				System.out.println(cliente2.getNome());
				dao.deletar(cliente2.getId());
			}
			
			
			try {
				Thread.sleep(100L);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			
			break;
		}
		
		
		if(true) return;
		
		Contex contex = InitialContex.getInstance();
		
//		for(Class classe : contex.getAnnothedClass()) {
//			System.out.println(classe);
//		}
		
//		System.out.println(contex.getConfiguration() == null);
//		
//		Session session = contex.getSessionFactory("jacare").getCurrentSession();
//		session = contex.getSessionFactory().getCurrentSession();
		
		Session session = contex.getSession("teste");
		
//		session = contex.getSessionFactory("treta").getCurrentSession();
//		session = contex.getSessionFactory("teste").getCurrentSession();
		
//		if(true) return;
		
		cliente = new Cliente();
		cliente.setNome("Thiago Luiz Rodrigues");
		cliente.setCpf("1111");
		cliente.setIdade(24);
		cliente.setEndereco(new ArrayList<Endereco>());
		
		for(int i = 0; i < 20; i++) {
			Endereco endereco = new Endereco();
			endereco.setNumero("1234");
			endereco.setRua("rua amador bueno " + i);
			endereco.setCliente(cliente);
			cliente.getEndereco().add(endereco);
		}
		
		
		session.beginTransaction();
		session.save(cliente);
		session.getTransaction().commit();
		/******************************************/
		
//		session = contex.getSessionFactory().getCurrentSession();
//		
//		Endereco endereco = new Endereco();
//		endereco.setNumero("1234");
//		endereco.setRua("rua amador bueno");
//		endereco.setCliente(cliente);
//		
//		session.beginTransaction();
//		session.saveOrUpdate(endereco);
//		session.getTransaction().commit();
//		
//		session = contex.getSessionFactory().getCurrentSession();
//		
//		endereco = new Endereco();
//		endereco.setNumero("1234");
//		endereco.setRua("rua amador bueno");
//		endereco.setCliente(cliente);
//		
//		session.beginTransaction();
//		session.saveOrUpdate(endereco);
//		session.getTransaction().commit();
//		
//		session = contex.getSessionFactory().getCurrentSession();
//		
//		endereco = new Endereco();
//		endereco.setNumero("1234");
//		endereco.setRua("rua amador bueno");
//		endereco.setCliente(cliente);
//		
//		session.beginTransaction();
//		session.saveOrUpdate(endereco);
//		session.getTransaction().commit();
		
		
		session = contex.getSession("teste");
		session.beginTransaction();
		cliente = (Cliente)session.load(Cliente.class, cliente.getId());
		
		for(Endereco endereco2 : cliente.getEndereco()) {
			System.out.println(endereco2.getRua());
		}
		
		session.getTransaction().commit();
		
	}

}
